/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Tables;

/**
 *
 * @author rehgon
 */

import java.sql.*;

public class Mitarbeiter {
    
    
    public static void insertMitarbeiter(Connection conn, String name, int gehalt, String geburtstag, String adresse, int bankverbindung, int kannbedienen) {
        try {
            PreparedStatement stmt = conn.prepareStatement(
                  " insert into Mitarbeiter(name, gehalt, geburtstag, adresse, bankverbindung)"
                + " values('" + name + "'," + gehalt + ",?,'" + adresse + "'," + bankverbindung + ")"
            );
            
            Date tmpdate = new Date(0000-00-00);
            stmt.setDate(1,tmpdate.valueOf(geburtstag));
            
            stmt.executeUpdate();
            
            System.out.println("Der Mitarbeiter mit den Angaben: " + name + "," + gehalt + "," + geburtstag + "," + adresse + "," + bankverbindung + " wurde erzeugt.");
        } catch (SQLException ex){
            System.out.println(ex.getMessage());
        }
    }
    
    public static void kannBedienen(Connection conn, int mitarbeiterId, String MaschineBezeichnung) {
        
        try {
            Statement stmt = conn.createStatement();
            stmt.executeUpdate(
                  " insert into kannBedienen"
                + " (idMitarbeiter, bezeichnungMaschine)"
                + " values(" + mitarbeiterId + ",'" + MaschineBezeichnung + "')"
            );
            System.out.println("Der Mitarbeiter mit der Id " + mitarbeiterId + " kann nun die Maschine \"" + MaschineBezeichnung + "\" bedienen");
        } catch (SQLException ex) {
            System.out.println(ex.getMessage());
        }
    }
    
    public static void selectAllMitarbeiter(Connection conn) {
        try {
            Statement stmt = conn.createStatement();
            ResultSet rs = stmt.executeQuery(""
                + "select * from Mitarbeiter"
            );
            while(rs.next()) {
                System.out.println(rs.getInt("mitarbeiterId") + " | " + rs.getString("name") + " | " + rs.getInt("gehalt") + " | " + rs.getDate("geburtstag") + " | " + rs.getString("adresse") + " | " + rs.getInt("bankverbindung"));
            }
            stmt.close();
        } catch(SQLException ex) {
            ex.getMessage();
        }
    }
    
    //Gibt es einen freien Mitarbeiter welcher die Maschine bedienen kann und an diesem Tag frei ist
    public static ResultSet getFreeWorker(Connection conn, String idMaschine, String datum) {
        
        ResultSet rs = null;
        try {
            Statement stmt = conn.createStatement();
            rs = stmt.executeQuery(
                " select top 1 Mitarbeiter.mitarbeiterId from Mitarbeiter"
              + " where Mitarbeiter.mitarbeiterId not in"
              + " ("
              + "   select distinct idMitarbeiter from Fertigungsschritt"
              + "   where Fertigungsschritt.datum = '" + datum + " 00:00:00.000'"
              + " )"
              + " and Mitarbeiter.mitarbeiterId in"
              + " ("
              + "   select KannBedienen.idMitarbeiter from KannBedienen"
              + "   where KannBedienen.bezeichnungMaschine = '" + idMaschine + "'"
              + " )"
            );
        } catch (SQLException ex) {
            System.out.println(ex.getMessage());
        } finally {
            return rs;
        }
    }
    
}
